package com.demo.java.OD551_600.OD571;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最长公共前缀(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146558719
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 获取用户输入的字符串数组
        String[] strs = in.nextLine().replace("[", "").replace("]", "").replace("\"", "").split(",");
        // 调用 longestCommonPrefix 函数输出结果
        System.out.println(longestCommonPrefix(strs));
    }

    // 主函数：查找字符串数组中的最长公共前缀
    public static String longestCommonPrefix(String[] strs) {
        // 如果输入数组为空或数组长度为零，返回 "Zero"
        if (strs == null || strs.length == 0) {
            return "Zero";
        }

        // 初始化公共前缀为第一个字符串
        String prefix = strs[0];
        // 遍历数组中的其他字符串
        int count = strs.length;
        for (int i = 1; i < count; i++) {
            // 更新公共前缀
            prefix = longestCommonPrefix(prefix, strs[i]);
            // 如果公共前缀为空，则没有公共前缀，返回 "Zero"
            if (prefix.length() == 0) {
                break;
            }
        }
        // 返回公共前缀，如果没有，返回 "Zero"
        return prefix.equals("") ? "Zero" : prefix;
    }

    // 辅助函数：查找两个字符串的最长公共前缀
    public static String longestCommonPrefix(String str1, String str2) {
        int length = Math.min(str1.length(), str2.length()); // 获取较短的字符串长度
        int index = 0;
        // 从第一个字符开始，逐一比较字符是否相同
        while (index < length && str1.charAt(index) == str2.charAt(index)) {
            index++;
        }
        // 返回公共前缀
        return str1.substring(0, index);
    }
}